home *** CD-ROM | disk | FTP | other *** search
-
- ╔══════════════════════════════════════════════════════════════════════════╗
- ║ ║
- ║ HyperAct, Inc. ║
- ║ P.O.Box. 5517 ║
- ║ Coralville IA 52241 U.S.A ║
- ║ Compuserve - 76350,333 ║
- ║ Phone/Fax - (319) 351-8413 ║
- ║ ║
- ╚══════════════════════════════════════════════════════════════════════════╝
-
- *******************************************************************************
- * 3dLIB *
- * 3dLIB - 3D Graphic objects library for Turbo Pascal Programmers. V3.0 *
- * Last Update : Feb. 20, 1994. *
- *******************************************************************************
-
- *******************************************************************************
- * FILE - LIST *
- *******************************************************************************
-
- The distribution package contains the following files, in the following
- archives :
-
- Archive A :
- -----------
-
- * .TPU - Pascal Units, DOS Real Mode :
- CTM3D .TPU - Current Transformation Matrix definition.
- PROJECT3.TPU - Projection (3D -> 2D) unit.
- HDR3D .TPU - Header to 3D structures.
- RTOBJ .TPU - 3D Wire-Mesh objects.
- * .TPW - Pascal Units, Windows :
- CTM3D .TPW - Current Transformation Matrix definition.
- PROJECT3.TPW - Projection (3D -> 2D) unit.
- HDR3D .TPW - Header to 3D structures.
- RTOBJ .TPW - 3D Wire-Mesh objects.
- * .INT - Pascal Units interfaces :
- CTM3D .INT - Current Transformation Matrix definition.
- PROJECT3.INT - Projection (3D -> 2D) unit.
- HDR3D .INT - Header to 3D structures.
- RTOBJ .INT - 3D Wire-Mesh objects.
- * .PAS - Pascal Sources, Demo Programs :
- DEMO3D .PAS - A demo program - DOS.
- DEMO3DW .PAS - A demo program - Windows.
- * .3D2 - Demo OBJ3D Type object files (Pascal/Real):
- 3 .3D2 - A 3 dimensional "3" character.
- BOX .3D2 - A 3D box.
- D .3D2 - A 3 dimensional "d" character.
- PROP .3D2 - A 3D Propeller.
- PYR .3D2 - A Pyramid.
- SUPROP .3D2 - Another 3D Propeller.
- TRAP .3D2 - A 3D Trapeze.
- TWOLAYER.3D2 - Demo 3DO defined object.
- * .3DS - Demo ComplexObj type object files.
- BIMBO .3DS
- HOUSE .3DS - A Very bad example of a house.
- INMID .3DS
- MASHPECH.3DS
- MYTEST .3DS
- TWOBOX .3DS - 2 Boxes Object.
- TWOEDGE .3DS
- TWOPYR .3DS - 2 Pyramids.
- * .3DD - Demo object definition files.
- TWOLAYER.3DD - Two Layers - one above the other.
- TWOPYR .3DD - The Two Pyramids Complex Object Src.
- 3DLIB .DOC - This file.
- 3DC .EXE - M3D to PAS source file translator. (DOS).
- 3DC .DOC - 3dC translator documentation.
- 3DA .EXE - 3dA Macro Animator (Interpreter) for the DOS environment.
- 3DO .EXE - 3dO object compiler - DOS.
- 3DO .DOC - 3dO object compiler documentation.
- * .M3D - Sample macro programs.
- 3DEMO .M3D - Rotating '3' and 'D' objects.
- BOX3MV .M3D - Spiral Box.
- BUG .M3D - An old macro that once helped me to
- debug some of the 3D code.
- CLC .M3D
- FOXTROT .M3D - Named after the Genesis album (Why?)
- INTEGV .M3D - A Nice macro.
- KUKU .M3D
- NEWDEMO .M3D - A Long macro.
- PYR3MV .M3D - Same as BOX3MV but with a pyramid.
- PYRMOV .M3D
- PYRTYP .M3D
- R2D2 .M3D
- SUPERBOX.M3D - A box that "moves" in space..
- TST .M3D
- TWOBOXMV.M3D - A ComplexObject animated.
- ZOOZO .M3D
- DEMO3D .EXE - Demo 3d animation program - DOS.
- DEMO3DW .EXE - Demo 3d animation program - Windows.
- PROGRAMS.TXT - HyperAct, Inc. shareware products description.
- 3DLIB .REG - 3dLIB registration file.
- 3DLIB .UPG - 3dLIB upgrade file for registered users.
- 3DLIB .RES - 3dLIB resource file for windows programs.
- EGAVGA .BGI - BGI driver for EGA/VGA. (Pascal Compatible).
- 3DLIB .TPH - A BP IDE/THELP 3dLIB on-line help.
-
- Archive B :
- -----------
-
- * .H - C++ Headers, DOS Real Mode (BC++/4):
- CTM3D .H - Current Transformation Matrix definition.
- PROJECT3.H - Projection (3D -> 2D) unit.
- HDR3D .H - Header to 3D structures.
- RTOBJ .H - 3D Wire-Mesh objects.
- * .OBJ - C++ Object files, DOS Real Mode model medium (BC++/4):
- CTM3D .OBJ - Current Transformation Matrix definition.
- PROJECT3.OBJ - Projection (3D -> 2D) unit.
- HDR3D .OBJ - Header to 3D structures.
- RTOBJ .OBJ - 3D Wire-Mesh objects.
- * .CPP - C++ Sources, Demo Programs :
- DEMO3D .CPP - A demo program - DOS.
- * .MAK - C++ Make files for the demo programs :
- DEMO3D .MAK - A demo program - DOS/Make file.
- * .3D3 - Demo OBJ3D Type object files (C++/Double):
- 3 .3D3 - A 3 dimensional "3" character.
- BOX .3D3 - A 3D box.
- D .3D3 - A 3 dimensional "d" character.
- PROP .3D3 - A 3D Propeller.
- PYR .3D3 - A Pyramid.
- SUPROP .3D3 - Another 3D Propeller.
- TRAP .3D3 - A 3D Trapeze.
- TWOLAYER.3D3 - Demo 3DO defined object.
-
- 3DCW .EXE - Windows Hosted MDI M3D to PAS generator, and animator.
- R2D .EXE - Convert Real (Pascal) Objects to Double (C/C++) objects.
- 3DCW .HLP - 3dCW on-line windows help file.
-
- *******************************************************************************
- * Why Register *
- *******************************************************************************
-
- 3dLIB is a shareware product, if you find this product valuable, please
- register it. This section describes the reasons you should register.
-
- By registering you will receive a diskette with the latest 3dLIB version,
- the 3d environment program, for WYSIWYG object creation, the complete source
- code for the 3d library, and - you will help us to create the next version of
- 3dLIB - that will include even more features than the features that are
- currently available!, we might even add YOUR enhancement requests!
-
- A Special Registration Bonus include the 3D Mania Screen Saver Module Source!
-
- With your registered version you will also receive a Registration Bonus
- Certificate for one issue (or an additional issue if already a subscriber) of
- the "JCSM Shareware Collection"tm CD-ROM at a cost of only $9.95 ! (plus S&H).
- Offer valid through June 30, 1994. Only one certificate can be redeemed per
- issue.
-
- To order your registered copy of 3dLIB please do one of the following:
-
- 1. Order from HyperAct Inc.:
- You can order directly from HyperAct Inc. Please refer to the
- supplied 3DLIB.REG file. Edit it, print it and mail it
- (with a check) to:
- HyperAct Inc.,
- P.O.Box 5517
- Coralville Iowa 52241, U.S.A
- If you are outside the US and Canada, please note the following:
- - the S&H fee
- - wire-transfer payments can be arranged. Please contact
- HyperAct, Inc.
-
- 2. Order from PsL:
- You can order from Public (software) Library with your MC, Visa, AmEx
- or Discover card by calling 800-242-4PsL (from overseas: 713-524-6394)
- or by FAX to 713-524-6398 or by Compuserve to 71355,470.
- These numbers are for ordering only. HyperAct, Inc. can NOT be reached at
- those numbers. Please contact HyperAct, Inc. directly for any other
- type of problem (technical or other), information or request.
-
- Registered users Upgrade note:
- ------------------------------
- If you registered 3dLIB version 2.5, you can receive this version free (you
- pay only S&H fee). If you have an older version, you can get this version for
- only $20 (plus S&H fees). Please refer to the supplied 3DLIB.UPG file. Edit it,
- print it and mail it (with a check) to HyperAct, Inc.
-
- *******************************************************************************
- * What's New *
- *******************************************************************************
-
- Version 3.0 -
-
- Animate Windows icon in 3dCW is displayed properly when the animate window is
- minimized.
-
- Macro Parser now supports @functions, the following functions were added :
- @sin, @cos, @sqr, @cotan, @ln, @log10, @log2, @abs, @arctan, @arccos, @exp,
- @e, @tan, @pi, @random. (Interpreter + Compiler).
-
- The Macro Parser interpreter has better error detection, and fixes variable
- assignment bug.
-
- The 3da program restores the text screen upon exit, from this version.
-
- Added conditional statement to the 3d macro language. With this statement the
- equivalent of a "If Then Else" statement is added to the macro language.
-
- Add C++ library for BC++/BGI. The same core of the 3d library is now available
- to C++ programmers!
-
- Added the R2D.EXE program, to convert *.3D2 and *.3DS 3d objects to the
- C++ equivalent objects. (*.3D3 and *.3DS).
-
- Added *.3D3 object generation to the 3DO object compiler. (/OC+ switch).
-
- Added C++ Macro Translation to the 3DC macro compiler.
-
- Added Genereate|C++/DOS menu entry in the 3dCW program.
-
- Added Help|Search menu entry in the 3dCW program.
-
- ====
-
- Version 2.5 -
-
- Added the color selection command (#c where c = color number) to the 3Dmacro
- language.
-
- Fixed a bug in the animate parser (3da and 3dcw) that did not recognize
- variables in the start of an expression.
-
- Fixed a bug in the macro compiler parser, assignments are handled properly.
-
- The 'z' macro command is now handled in the same way in the animate and compile
- modes - It sets the object's 3d center of gravity to 0,0,0
- (goto3DPos(0,0,0)).
-
- Improved on-line and text documentation.
-
- Fixed a bug in 3dCW - animate command on New files (untitled) will not cause
- a GPF.
-
- ====
-
- Version 2.0 -
-
- Added the Animate button to the 3dCW program toolbar.
-
- Added the Background BMP toggle option to the 3dCW Options menu.
-
- Added the floating Tools child window to the macro editor windows, just click
- on the desired tool to get a command dialog box that will be inserted into the
- source text (and you thought it can't be easier .. ).
-
- The 3d simple object was updated to use Collections, so the number of points
- and lines is not limited to the size that was decided when the library was
- compiled. Please notice - the format of the .3d2 and .3ds files was not changed
- in order to maintain compatibility with older objects. It should be noted that
- the objects API (Methods calling conventions) was not changed as well. The only
- difference is in the implementation of the 3d objects (It does pay to play by
- the OOPS rules after all ..).
- Because of this change the 3d library can support large and small objects at
- the same time with no practical overhead.
-
- Added the 3DLIB.TPH on-line file, use this file from within the BP IDE or THELP
- for 3dLIB on-line help.
-
- ====
-
- Version 1.7 -
-
- The help facility of the 3dCW program can be activated from the menu, not just
- from the toolbar.
-
- From this version the extremely important feature of having the author's picture
- in the background of the 3dCW program is added. In this picture the author is
- seen in his Alfa-Romeo Spider 2000. Admit it - this is a feature no other 3d
- graphic library (how many are there?) can offer you.
-
- The Options|Text Color option in the 3dCW program now works properly.
-
- The help database was extended, and received useful titles in this version.
-
- The 3dCW program was converted to work with Borland's BWCC DLL.
-
- Added Help|Using help option in the 3dCW program.
-
- The 3dO object compiler now supports the creation of complex objects, as well
- as simple objects (added a complexObject statement to the 3DD language).
-
- The SimpleObject statement of the 3DD language (3dO object compiler..) now has
- a new optional parameter - NOGEN.
-
- ====
-
- Version 1.6 -
-
- 3dCW users can set the font of the edit window.
-
- The DOS and Windows source library files are combined, and only the different
- parts are separated by {$ifdef}s (conditional compiles).
-
- Added support for BP7, and upgraded the utilities to BP7.
-
- 3dCW was converted to be a MDI program, with the goodies of a toolbar, etc.
-
- The 'w' and 'b' are handled as they should be in the 3dCW animator from this
- version (a bug fix).
-
- Added the 3dO object compiler program, that helps with the creation of 3d
- objects from object definition files described in the new object definition
- language (please refer to 3DO.DOC).
-
- ====
-
- Version 1.5 -
-
- The 3dC and 3dCW programs generate a getClassName function for the generated
- windows.
-
- Added Animate Command to the 3dCW program, this way macros can be prototyped
- before they are translated into source code.
-
- ====
-
- Version 1.4 -
-
- Added the 3dA program, an animator for .M3D macro programs, in the DOS
- Environment.
-
- Added the Windows Hosted 3dCW program, a macro translator that runs in the
- Windows environment.
-
- This version was tested with Turbo Pascal for Windows V1.5 .
-
- ====
-
- Version 1.3 -
-
- Adds the 3dLIB.RES resource file for use in Windows programs generated by
- the 3DC program.
-
- 3dC generated programs include a menu that allows them to be re-animated and
- closed.
-
- ====
-
- Version 1.2 -
-
- Adds support for Turbo Pascal for Windows programmers by including a second
- set of Pascal code sources for this compiler.
-
- The supplied 3dC macro compiler has been enhanced to produce code for both
- compilers, by using a switch on the command line. Please notice - The same
- macro source files can be translated into Turbo Pascal 6.0 and Turbo Pascal
- for Windows code, with no change in the macro definition!
-
- The supplied 3dC macro compiler implemented the z, b and w commands that were
- omitted from version 1.1 because of time constraints.
-
- *******************************************************************************
- * INTRODUCTION *
- *******************************************************************************
-
- 3dLIB is a library of Pascal units that allows Turbo Pascal programmers to write
- applications that display and animate 3D wire-mesh objects. The library is based
- on a project developed since 1984 on different platforms.
-
- This package supports both Turbo Pascal for DOS and Turbo Pascal for Windows (Or
- BP 7.0 with objects for DOS real/protected and windows targets).
-
- A package called 3D120 is distributed by HyperAct Inc. that includes a graphic
- editor, macro interpreter and Pascal translator to create and use 3D objects.
- It is highly recommended that any programmer trying to use this library will use
- the 3D program to create objects, and understand the animation abilities of the
- library.
-
- The 3dCW program is a MDI IDE for 3d macro programs (.M3D files).
-
- For more help - please consult the provided on-line help database, from within
- the 3dCW program.
-
- *******************************************************************************
- * OBJECTS *
- *******************************************************************************
- The 3D objects are defined as the following TP object-structures :
-
- *******************************************************************************
- * baseObject *
- *******************************************************************************
-
- baseObject - defined in the RTOBJ.PAS file, this is the "dummy" ancestor object
- class of the 3D-objects, such an object has a CTM (called myCTM), a color, a
- center of gravity 3D point (location), and other display attributes, in order
- to achieve better animation results, a scrPntUpdt boolean variable is used to
- indicate if the screen 2D points of the object has to be re-calculated from the
- 3D representation.
-
- The object uses a 4X4 "transformation matrix" to represent itself in the 3D
- universe, the move, translate, scale, allScale, rotate, goto3dPos, setToOrigin,
- calcLocation and deleteTransform methods are used to update that matrix (the
- Current Transformation Matrix).
-
- The load, save, writeMe, and readMe methods are used to store and retrieve a 3D
- object from a storage device (a disk..), and the open and close methods are
- used to construct, and destruct the object. The show, hide and paint methods
- display, or erase the object on the 2D screen. One more interesting method is
- the updateScreenPoints method, that transforms the 3D object representation to
- the 2D screen.
-
- *******************************************************************************
- * obj3D *
- *******************************************************************************
-
- obj3D is a descendant object of the baseObject class, this is a simple
- wire-mesh object, that is built from a Collection of 3D points in the 3D
- universe, a collection of 3d lines (a line is a segment in the 3D universe
- that connects 2 3D points), another collection holds the 2D screen points of
- the object, calculated from its 3D representation, and the CTM.
- Another interesting aspect of this object is the use of 2 more matrices, the
- reverseRot, and unReverseRot CTM objects, that are used to hold only the
- reverse, and counter reverse of the rotation transformations, these are used
- by complex objects that contain several obj3D objects, where some of them has
- to be rotated, scaled and translated around an arbitrary point in the 3D
- universe, which is not their center of gravity (frame - reference).
-
- This object is referred as simple object in some places in the provided
- documentation.
-
- *******************************************************************************
- * complexObj *
- *******************************************************************************
-
- The RTOBJ.PAS file contains the definition of the complexObj 3D object, this
- is an object that contains a maxSubObjects (defined in that file) array of
- simple wire-mesh obj3D objects. This object class sometimes referred to as the
- "super - object", allows the user to create complex 3D objects that has a
- common frame - reference (center of gravity), an example of such an object
- might be a Robot, that has a center of gravity, and is built of some sub
- objects that must be able to be transformed both with the frame - reference,
- and by themselves.
-
- The RTOBJ.PAS (for - runtime object) unit file contains the definition of the
- baseObj, obj3D and the complexObj classes.
-
-
- *******************************************************************************
- * PROJECTIONS *
- *******************************************************************************
-
- The PROJECT3.PAS file contain the code that transforms objects and points from
- the 3D universe, to the 2D coordinates.
-
- Two 3D -> 2D transformations are supported, axonometric projection, and
- perspective projection. This is a short explanation of the difference between
- these 2 projections :
-
- A : axonometric projections, no perspective due to
- distance is performed, the general way
- we can look at the coordinate system is as
- follows :
-
- | z axis
- |
- / \
- x axis / \ y axis
-
- B : perspective projections : the normal eye perspective
- projection is performed, we can look at the 3d
- universe we are referring to as a cube of
- 1000 x 1000 x 1000 integer locations, with
- the x axis, and y axis parallel to the screen
- x, y axis respectively, and the z axis going into
- the screen.
-
- we will look at the coordinate system as follows :
-
- │ Y axis
- │
- Z axis x------ X axis
-
- These units contain a calcPoint procedure that receives a 3D point, and
- transforms it to a 2D screen coordinate, the setPerspective,
- resetPerspective and togglePerspective change from perspective projection
- to axonometric projection, and vice versa.
-
- *******************************************************************************
- * CTM *
- *******************************************************************************
-
- CTM3D.PAS is the file that defines the current transformation matrix that is
- used to position the 3D objects in the universe. The CTM is a 4x4 matrix
- that is multiplied (from the right) by each point of the 3D object whenever
- a new location is desired for the object.
-
- This unit defines all the transformations that can be applied and used by a
- CTM, like rotate, scale, translate etc..
-
- *******************************************************************************
- * 3D2 FORMAT *
- *******************************************************************************
-
- The obj3D object files are files of type real, that has the following structure:
-
- 1 Real entry : number of 3D points. (We will call in numOfPoints)
- numOfPoints entries that contain the following information :
- 1 Real Entry : X location in the 3D universe.
- 1 Real Entry : Y location in the 3D universe.
- 1 Real Entry : Z location in the 3D universe.
- 1 Real Entry : number of lines. (We will call it numOfLines)
- numOfLines entries that contain the following information :
- 1 Real Entry : 3D Point Number of "From" edge of the line.
- 1 Real Entry : 3D Point Number of "To" edge of the line.
-
- Please refer to the OBJ3D.README method that deals with reading this 3D file
- format.
-
- To Create object of this kind - Please use the 3dO object compiler provided
- with this package, or the 3D environment program available in a different
- package, or with the registered version.
-
- *******************************************************************************
- * 3DS FORMAT *
- *******************************************************************************
-
- The complexObj object files are files of real type that have the following
- structure :
-
- 1 Real Entry : Number of subobjects the complexObj contain (We will
- call it numOfChilds)
- numOfChilds entries that have the same structure as simple 3D2 files.
-
- To Create object of this kind - Please use the 3dO object compiler provided
- with this package, or the 3D environment program available in a different
- package, or with the registered version.
-
- *******************************************************************************
- * Warranty *
- *******************************************************************************
-
- There is no warranty what so ever, The package is supplied as is, The
- distributor (ISoft D&M), or the author (Loewy Ron), are not, and will not be
- responsible for any damages, lost profits, or inconveniences caused by the use,
- or inability to use this package. The use of the package is at your own risk.
- By using (or attempting to use) the package you agree to this.
-
- *******************************************************************************
- * General *
- *******************************************************************************
-
- 3dLIB is distributed by HyperAct Inc.,
- P.O.Box. 5517
- Coralville
- IA 52241,
- U.S.A.
-
- 3dLIB is (c) copyrighted by HyperAct, Inc., 1991,94.
-
- 3dLIB is a shareware package, please register your copy. To register your copy
- of 3dLIB please refer to the supplied 3DLIB.REG file.
-
- Other programs distributed by HyperAct Inc. are described in the supplied
- PROGRAMS.TXT file.
-
- *******************************************************************************
- * Contact *
- *******************************************************************************
-
- Please contact :
-
- HyperAct, Inc.
- P.O.Box 5517
- Coralville IA 52241
- U.S.A
-
- E-Mail : Compuserve - 76350,333
- Phone : (319) 351-8413
-
- To contact the author directly please write to :
-
- E-Mail : Compuserve - 100274,162
-
-
- *******************************************************************************
- * Credits *
- *******************************************************************************
-
- 3dLib was written by Ron Loewy.
-
- 3dLIB was written using Turbo Pascal 6.0 & 7.0, as well as Turbo Pascal for
- Windows 1.0, 1.5 and Borland Pascal with objects 7.0.
- These products are trademarks of Borland international.
-
- Windows 3.0 and Windows 3.1 are trademarks of Microsoft Corp.
-
- The Borland Brief v3.1 editor was used to write these programs.
-
- The windows help file, as well as the TPH file were created using the help
- development kit (HLPDK) v11.0 by Loewy Ron.
-
- The Author's picture (in the 3dCW program) was taken by Allison Bially.
-